package com.smart.milvus.conditions.search;

import com.smart.milvus.bean.MilvusModel;
import com.smart.milvus.conditions.AbstractWrapper;
import com.smart.milvus.conditions.Wrapper;
import com.smart.milvus.model.index.IIndexExtra;

import java.util.List;

public interface BaseSearchWrapper<
        T extends MilvusModel<? extends MilvusModel<?>>,
        R,
        C extends AbstractWrapper<T, R, C>>
        extends Wrapper<T> {

    String getIndexName();

    IIndexExtra getExtra();

    String getIndexColumn();

    C index(String indexName, R indexColumn, IIndexExtra indexExtra);

    Integer getTopK();

    C setTopK(Integer topK);

    C vector(R column, List<Float> value);

    String getVectorColumn();

    List<Float> getVectorValue();
}
